/*
输入一个n*n的黑白图像（1表示黑色，0表示白色），任务是统计其中八连块的个数。如果两个黑格子有公共边或者公共顶点，就说它们属于同一个八连块。
 */

package com.yuan.algorithms.Algorithm_1;

import java.util.Scanner;

public class 图搜索_黑白图像 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            int[][] map = new int[n][n];//保存地图
            boolean[][] tab = new boolean[n][n];//标记该位置是否访问过
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    map[i][j] = sc.nextInt();
                }
            }
        }
    }
    //深度搜索
    public static void dfs(int[][] map, boolean[][] tab, int x, int y){
        if (map[x][y] == 0 && !tab[x][y]) {
            tab[x][y] = !tab[x][y];//标记已访问
            //向周围扩展搜索
            dfs(map, tab, x-1, y);
            dfs(map, tab, x-1, y+1);
            dfs(map, tab, x-1, y-1);
            dfs(map, tab, x, y+1);
            dfs(map, tab, x, y-1);
            dfs(map, tab, x+1, y);
            dfs(map, tab, x+1, y+1);
            dfs(map, tab, x+1, y-1);
        }
    }
}
